home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-02 | 5.2 KB | 224 lines | [TEXT/PJMM] |
- unit MyStrings;
-
- interface
-
- procedure LeftP (var s: str255; len: integer);
- function Left (var s: str255; len: integer): str255;
- procedure LeftAssignP (var s: str255; len: integer; var rhs: str255);
- function LeftAssign (var s: str255; len: integer; var rhs: str255): str255;
- procedure RightP (var s: str255; len: integer);
- function Right (var s: str255; len: integer): str255;
- procedure RightAssignP (var s: str255; len: integer; var rhs: str255);
- function RightAssign (var s: str255; len: integer; var rhs: str255): str255;
- procedure MidP (var s: str255; p, len: integer);
- function Mid (var s: str255; p, len: integer): str255;
- procedure MidAssignP (var s: str255; p, len: integer; var rhs: str255);
- function MidAssign (var s: str255; p, len: integer; var rhs: str255): str255;
- procedure HandleToStringP (h: univ handle; var s: str255);
- function HandleToString (h: univ handle): str255;
- procedure StringToHandle (var s: str255; h: univ handle);
- function Trim (s: string): string;
- procedure SplitBy (s: str255; ch: char; var left, right: str255);
- function UpCaseChar (ch: char): char;
- function UpCase (ch: char): char;
- inline
- $301F, $0C00, $0061, $6500, $000E, $0C00, $007B, $6400, $0006, $0400, $0020, $3E80;
- procedure UpCaseString (var s: string);
- function UpCaseStr (s: string): string;
- { procedure SPrintS5V (var dst: str255;var src,s1, s2, s3, s4, s5: str255);}
- procedure SPrintS5 (var dst: str255; src, s1, s2, s3, s4, s5: str255);
- procedure SPrintS3 (var dst: str255; src, s1, s2, s3: str255);
-
- implementation
-
- uses
- MyTypes;
-
- procedure LeftP (var s: str255; len: integer);
- begin
- s := copy(s, 1, len);
- end;
-
- function Left (var s: str255; len: integer): str255;
- begin
- Left := copy(s, 1, len);
- end;
-
- procedure LeftAssignP (var s: str255; len: integer; var rhs: str255);
- begin
- s := concat(rhs, copy(s, len + 1, 255));
- end;
-
- function LeftAssign (var s: str255; len: integer; var rhs: str255): str255;
- begin
- LeftAssign := concat(rhs, copy(s, len + 1, 255));
- end;
-
- procedure RightP (var s: str255; len: integer);
- var
- p: integer;
- begin
- p := Length(s) - len;
- if p < 1 then
- p := 1;
- s := copy(s, p, 255);
- end;
-
- function Right (var s: str255; len: integer): str255;
- var
- p: integer;
- begin
- p := Length(s) - len;
- if p < 1 then
- p := 1;
- Right := copy(s, p, 255);
- end;
-
- procedure RightAssignP (var s: str255; len: integer; var rhs: str255);
- begin
- s := concat(copy(s, 1, Length(s) - len), rhs);
- end;
-
- function RightAssign (var s: str255; len: integer; var rhs: str255): str255;
- begin
- RightAssign := concat(copy(s, 1, Length(s) - len), rhs);
- end;
-
- procedure MidP (var s: str255; p, len: integer);
- begin
- s := copy(s, p, len);
- end;
-
- function Mid (var s: str255; p, len: integer): str255;
- begin
- Mid := copy(s, p, len);
- end;
-
- procedure MidAssignP (var s: str255; p, len: integer; var rhs: str255);
- begin
- s := concat(copy(s, 1, p - 1), rhs, copy(s, p + len + 1, 255));
- end;
-
- function MidAssign (var s: str255; p, len: integer; var rhs: str255): str255;
- begin
- MidAssign := concat(copy(s, 1, p - 1), rhs, copy(s, p + len + 1, 255));
- end;
-
- {$PUSH}
- {$R-}
- procedure HandleToStringP (h: univ handle; var s: str255);
- var
- len: longInt;
- begin
- len := GetHandleSize(h);
- if len > 255 then
- len := 255;
- s[0] := chr(len);
- BlockMove(h^, @s[1], len);
- end;
- {$POP}
-
- function HandleToString (h: univ handle): str255;
- var
- s: str255;
- begin
- HandleToStringP(h, s);
- HandleToString := s;
- end;
-
- {$PUSH}
- {$R-}
- procedure StringToHandle (var s: str255; h: univ handle);
- begin
- SetHandleSize(h, length(s));
- BlockMove(@s[1], h^, length(s));
- end;
- {$POP}
-
- function Trim (s: string): string;
- begin
- while (length(s) > 0) and (s[1] in [spc, tab]) do
- Delete(s, 1, 1);
- while (length(s) > 0) and (s[length(s)] in [spc, tab]) do
- Delete(s, length(s), 1);
- Trim := s;
- end;
-
- procedure UpCaseString (var s: string);
- var
- i: integer;
- begin
- for i := 1 to length(s) do begin
- s[i] := UpCase(s[i]);
- end;
- end;
-
- function UpCaseStr (s: string): string;
- var
- i: integer;
- begin
- for i := 1 to length(s) do
- s[i] := UpCase(s[i]);
- UpCaseStr := s;
- end;
-
- function UpCaseChar (ch: char): char;
- begin
- if ('a' <= ch) & (ch <= 'z') then
- UpCaseChar := chr(ord(ch) - $20)
- else
- UpCaseChar := ch;
- end;
-
- procedure DoSub (var dst: str255; n: integer; var s: str255);
- var
- p: integer;
- begin
- p := Pos(concat('^', chr(n + 48)), dst);
- if p > 0 then begin
- Delete(dst, p, 2);
- Insert(s, dst, p);
- end;
- end;
-
- {$Z+}
- procedure SPrintS5V (var dst: str255; var src, s1, s2, s3, s4, s5: str255);
- begin
- dst := src;
- DoSub(dst, 5, s5);
- DoSub(dst, 4, s4);
- DoSub(dst, 3, s3);
- DoSub(dst, 2, s2);
- DoSub(dst, 1, s1);
- end;
- {$Z-}
-
- procedure SPrintS5 (var dst: str255; src, s1, s2, s3, s4, s5: str255);
- begin
- SPrintS5V(dst, src, s1, s2, s3, s4, s5);
- end;
-
- procedure SPrintS3 (var dst: str255; src, s1, s2, s3: str255);
- begin
- dst := src;
- DoSub(dst, 3, s3);
- DoSub(dst, 2, s2);
- DoSub(dst, 1, s1);
- end;
-
- procedure SplitBy (s: str255; ch: char; var left, right: str255);
- var
- p: integer;
- begin
- p := Pos(ch, s);
- if p <= 0 then begin
- left := s;
- right := '';
- end
- else begin
- left := copy(s, 1, p - 1);
- right := copy(s, p + 1, 255);
- end;
- end;
-
- end.